The most popular work conserving scheduler design is Deficit Weighted Round Robin (DWRR). In this design, a deficit value is maintained for each queue from which data packets are processed. The deficit value can indicate the remaining amount of credits available to process the data in the queue. As long as the deficit for a queue is greater than zero, the queue is eligible to process requests. Data packets are processed from each eligible queue in a round robin manner, using up credits as work is done, until each queue is ineligible, at which time each queue is credited with additional credit and the deficit for each queue is reset accordingly. To provide differing weights to the queues, the amount of data credited to each queue can vary. Accordingly, a queue with a greater weight can be credited with more data, thereby ensuring that a greater amount of data is processed from the queue before the queues are all refreshed. At any moment a queue is assigned one of only two priorities: eligible to be scheduled, or ineligible to be scheduled.
An alternative to DWRR is to use time stamps instead of a deficit for each queue. A time stamp for each queue can be initially set at zero and then incremented as data is processed from the queue. Data packets can be processed from the queue with the minimum time stamp. There can be many levels of priorities in the system. For example if the time stamp value is between 0 and 255 (and 8 bit value), a queue can be assigned one of 256 priority values corresponding to the time stamp value. This requires a fast search to be performed between each process to identify the queue with the minimum time stamp. To provide differing weights to the queues, each time stamp can be incremented at differing rates. Thus, the time stamp for a queue with a higher weight can be incremented at a slower rate than the time stamp for a queue with a lower weight. Managing the weight by utilizing differing rates allows the queues to be continuously credited rather than waiting for the queue to become ineligible to refresh.